package cn.tedu;

public class Test1 {
    public static void main(String[] args) throws InterruptedException {
        Thread t=new Thread();//无参构造  线程第一次默认名称为Thread-0

        Thread t4=new Thread();
        System.out.println(t4.getName());//Thread-1

        Thread t3=new Thread("郜");
        System.out.println(t3.getName());// 含参构造  和setName()一样  改变线程名称


        //static Thread currentThread()
        //返回对当前正在执行的线程对象的引用。
        //获取正在执行任务的 线程对象
        Thread t2 = Thread.currentThread();
        System.out.println(t2);//System.out.println(Thread.currentThread());
        //输出结果为 Thread[main,5,main]
        System.out.println(t2.getName());//获取线程名称
        System.out.println( Thread.currentThread().getName() );

        // long getId()
        //   返回该线程的标识符。
        long a=t.getId();
        System.out.println(a);//11

       //String getName()
        // 返回该线程的名称。
        String b=t.getName();
        System.out.println(b);//Thread-0

        //void run()
        //如果该线程是使用独立的 Runnable 运行对象构造的，则调用该 Runnable 对象的 run 方法；
        // 否则，该方法不执行任何操作并返回。
        t.run();//执行任务

        //void setName(String name)
        //          改变线程名称，使之与参数 name 相同。
        t.setName("晨");
        String b1=t.getName();
        System.out.println(b1);

        //static void sleep(long millis)
        //     在指定的毫秒数内让当前正在执行的线程休眠（暂停执行），
        //     此操作受到系统计时器和调度程序精度和准确性的影响。
        //t.sleep(10000);
        Thread.sleep(10000);

        // void start()
        //      使该线程开始执行；Java 虚拟机调用该线程的 run 方法。
        t.start();//开启线程

        // void stop()
        //    已过时。 该方法具有固有的不安全性。
        //    用 Thread.stop 来终止线程将释放它已经锁定的所有监视器
        //   （作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果）。
        //    如果以前受这些监视器保护的任何对象都处于一种不一致的状态，
        //    则损坏的对象将对其他线程可见，这有可能导致任意的行为。
        //    stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。
        //    目标线程应定期检查该变量，并且如果该变量指示它要停止运行，则从其运行方法依次返回。
        //    如果目标线程等待很长时间（例如基于一个条件变量），则应使用 interrupt 方法来中断该等待。
        //   有关更多信息，请参阅为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume？。
        t.stop();//结束线程

    }
}
